package com.java.queue.linkedlist;

import java.util.LinkedList;
import java.util.Queue;

public class LinkedListTest {

	/*
	 * 在java5中新增加了java.util.Queue接口，用以支持队列的常见操作。
	 * 该接口扩展了java.util.Collection接口。
	 * 	Queue使用时要尽量避免Collection的add()和remove()方法，
	 * 而是要使用offer()来加入元素，使用poll()来获取并移出元素。
	 * 它们的优点是通过返回值可以判断成功与否，add()和remove()方法在失败的时候会抛出异常。
	 *  如果要使用前端而不移出该元素，使用	element()或者peek()方法。
	 */
	
	/*
	 * LinkedList类实现了Queue接口，因此我们可以把LinkedList当成Queue来用。
	 */
	public static void main(String[] args) {
		String str = "";
		Queue<String> queue = new LinkedList<String>();
		// 添加元素
		queue.offer("花");
		queue.offer("落");
		queue.offer("知");
		queue.offer("多");
		queue.offer("少");
		System.out.println(queue.size());
		//peek() -  取得前端元素 ,不取出
		str = queue.peek();
		System.out.println("peekResult --- " + str);
		System.out.println(queue.size());
		//element() - 取得前端元素 ,不取出
		str = queue.element();
		System.out.println("elementResult --- " + str);
		System.out.println(queue.size());
		
		//取出元素
		while((str = queue.poll()) != null){
			System.out.println("result --- " + str);
		}
		System.out.println(queue.size());
	}

	/* 运行结果：
		queueSize --- 5
		
		peekResult --- 花
		queueSize --- 5
		
		elementResult --- 花
		queueSize --- 5
		
		result --- 花
		result --- 落
		result --- 知
		result --- 多
		result --- 少
		queueSize --- 0
	*/
}
